#!/bin/bash

# 断路器测试脚本
# 用于测试两个断路器的容错保护功能

echo "=== Spring Cloud 断路器测试脚本 ==="
echo ""

# 测试参数
BASE_URL="http://localhost:16000"
USER_ID=1
TEST_COUNT=10

echo "测试配置:"
echo "- 服务地址: $BASE_URL"
echo "- 用户ID: $USER_ID"
echo "- 测试次数: $TEST_COUNT"
echo ""

# 测试断路器A保护的购物车服务
echo "=== 测试断路器A (购物车服务) ==="
echo "断路器A配置: 失败率阈值30%, 最小请求数5"
echo ""

for i in $(seq 1 $TEST_COUNT); do
    echo "测试 $i/$TEST_COUNT - 购物车服务"
    response=$(curl -s "$BASE_URL/cart/getCartById/$USER_ID")
    echo "响应: $response"
    echo "---"
    sleep 1
done

echo ""
echo "=== 测试断路器B (用户详细信息服务) ==="
echo "断路器B配置: 失败率阈值50%, 慢调用阈值30%, 最小请求数5"
echo ""

for i in $(seq 1 $TEST_COUNT); do
    echo "测试 $i/$TEST_COUNT - 用户详细信息服务"
    response=$(curl -s "$BASE_URL/cart/getUserDetail/$USER_ID")
    echo "响应: $response"
    echo "---"
    sleep 1
done

echo ""
echo "=== 测试完成 ==="
echo ""
echo "测试说明:"
echo "1. 如果服务提供者正常运行，应该看到正常的响应"
echo "2. 如果停止服务提供者，断路器会在达到阈值后触发"
echo "3. 断路器A会在失败率超过30%时触发"
echo "4. 断路器B会在失败率超过50%或慢调用超过30%时触发"
echo "5. 触发后会自动返回降级响应"
echo ""
echo "监控建议:"
echo "- 查看应用日志观察断路器状态变化"
echo "- 访问Eureka控制台查看服务状态"
echo "- 观察降级方法的执行情况" 